const { createClient } = require("redis");

// 创建 Redis 连接
const redisClient = createClient({
    socket: {
        host: "localhost", // Redis 服务器地址
        port: 6379, // Redis 端口
    },
    password: "", // Redis 密码（如果有的话）
    // database: 0, // 使用的 Redis 数据库（默认是 0）
    database: 1, // 选择数据库 1
});

// 处理连接错误
redisClient.on("error", (err) => {
    console.error("❌ Redis 连接错误:", err);
});

// 连接 Redis
redisClient.connect().then(() => {
    console.log("✅ Redis 连接成功");
}).catch(console.error);

// 封装获取缓存的函数
async function getCache(key) {
    try {
        const data = await redisClient.get(key);
        return data;
    } catch (err) {
        console.error("❌ 获取 Redis 缓存失败:", err);
        return null;
    }
}

// 封装设置缓存的函数
async function setCache(key, value, expiry = 3600) {
    try {
        await redisClient.set(key, value, {
            EX: expiry, // 过期时间（秒）
        });
        return true;
    } catch (err) {
        console.error("❌ 设置 Redis 缓存失败:", err);
        return false;
    }
}

// 清空 Redis 缓存的函数
async function clearRedisCache() {
    try {
        // 使用 flushall 清空所有数据库的缓存
        await redisClient.flushAll();
        console.log("✅ Redis 缓存已清空");
    } catch (err) {
        console.error("❌ 清空 Redis 缓存失败:", err);
    }
}

// 调用清空缓存函数
clearRedisCache();

// 导出
module.exports = { getCache, setCache, clearRedisCache, redisClient };
